package com.sdonkey.score.dao;

import java.util.List;

import com.sdonkey.score.dto.AppADsDto;
import org.apache.ibatis.annotations.Param;

import com.sdonkey.score.bean.AdInfoBean;
import com.sdonkey.score.bean.ApplicationNewBean;
import com.sdonkey.score.bean.DeveloperBean;
import com.sdonkey.score.bean.RecommendBean;
import com.sdonkey.score.bean.TransferBean;
import com.sdonkey.score.bean.UserIncomeBean;
import com.sdonkey.score.dto.DeveloperAdsDto;

/**
 * 我的广告部分
 * @author 赵超、窦靖宇
 * @email 773134958@qq.com
 */
public interface IMyAdsDao {

	/**
	 * 查询用户关注的内容商的基本信息和广告观看进度
	 * @param userId
	 * @return
	 */
	List<DeveloperAdsDto> selectDeveloper_Ads(@Param("userId") String userId);

	/**
	 * 查询指定内容商中的所有广告  可分类
	 * @param userId
	 * @param devId
	 * @param flag	"v"=video	"p"=picture
	 * @param intpage 
	 * @return
	 */
	List<DeveloperAdsDto> selectOneDeveloper_Ads(@Param("userId") String userId, @Param("devId") String devId, @Param("flag") String flag, @Param("intpage") int intpage);

	/**
	 * 查询出用户已经播放的广告ID
	 * @param userId
	 * @return
	 */
	List<String> selectFinish_AdId(@Param("userId") String userId);

	
	/**
	 * 查询广告主
	 * @param devId
	 * @return
	 */
	List<AdInfoBean> selectMyAds(@Param("devId") Integer devId );
	
	/**
	 * 查询广告主下的所有广告
	 * @param adv_id 广告主id
	 * @param ad_type 广告类型
	 * @return 广告主下的所有指定类型广告
	 */
	List<AdInfoBean> selectAd(@Param("adv_id") Integer adv_id,@Param("ad_type") String ad_type);
	
	/**
	 * 查询已经收藏的广告
	 * @param devId 用户id
	 * @param ad_type 广告类型
	 * @return
	 */
	List<AdInfoBean> selectMyCollectionAds(@Param("devId") String devId,@Param("ad_type") String ad_type);

	/**
	 * 查询我的内容商
	 * @param userId
	 * @return
	 */
	List<DeveloperBean> selectMyDevelopers(@Param("userId") String userId);

	/**
	 * 查询用户已关注的内容商的id
	 * @param userId
	 * @return
	 */
	List<Integer> selectMyDevIds(@Param("userId") String userId);

	/**
	 * 按 内容商名称 模糊查询 或 按 donkey_num 查询 内容商
	 * @param info
	 * @return
	 */
	List<DeveloperBean> searchDevelopers(@Param("info") String info);

	/**
	 * 按内容商名称模糊查询内容商
	 * @param userId
	 * @param first 
	 * @return	
	 */
	List<DeveloperBean> searchDevelopers_Fl(@Param("userId") String userId, @Param("first") String first);

	/**
	 * 添加内容商关注
	 * @param userId
	 * @param devId
	 * @return
	 */
	int addDeveloper(@Param("userId") String userId, @Param("devId") String devId);

	/**
	 * 取消内容商关注
	 * @param userId
	 * @param devId
	 * @return
	 */
	int deleteDeveloper(@Param("userId") String userId, @Param("devId") String devId);

	/**
	 * 查询是否关注过内容商
	 * @param userId
	 * @param devId
	 * @return
	 */
	Integer selectIfCaredDev(@Param("userId") String userId, @Param("devId") String devId);

	/**
	 * 修改内容商的关注状态
	 * @param ifCared 已关注的内容商id
	 * @return
	 */
	int addDeveloper_Update(@Param("ifCared") int ifCared);

	/**
	 * 查询是否正在关注内容商
	 * @param userId 用户id
	 * @param devId 内容商id
	 * @return
	 */
	Integer selectIfCareingDev(@Param("userId") String userId, @Param("devId") String devId);

	/**
	 * 查询指定内容商的应用列表
	 * @param devId
	 * @param intpage
	 * @return
	 */
	List<ApplicationNewBean> selectApplications(@Param("devId") String devId, @Param("intpage") int intpage);

	/**
	 * 查询指定内容商的详细信息
	 * @param devId
	 * @return
	 */
	DeveloperBean selectDeveloperByDevid(@Param("devId") String devId);

	/**
	 * 查询内容商的专属（视频或图片）广告
	 * @param devId
	 * @param flag	标记（v视频	p图片广告）
	 * @return
	 */
	int select_VideoOrPictureAds_Num(@Param("devId") String devId, @Param("flag") String flag);

	/**
	 * 查询指定内容商的应用数量
	 * @param devId
	 * @return
	 */
	int select_App_Num(@Param("devId") String devId);

	/**
	 * 查询已播放信息
	 * @param userId
	 * @return
	 */
	DeveloperAdsDto getFinishInfo(@Param("userId") String userId, @Param("devId") String dev_id);

	/**
	 * 按条件查询 应用列表
	 * @param condition
	 * @return
     */
	List<ApplicationNewBean> selectAppByCondition(@Param("condition") String condition);

	/**
	 * 获取用户已添加的应用列表（包括应用对应的广告概览信息）
	 *
	 * @param userId
	 * @param status
	 * @return
     */
	 List<AppADsDto> getUserAppList(@Param("userId") String userId, @Param("status") String status);

	/**
	 * 绑定应用平台账号
	 * @param userId
	 * @param app_id	应用id
	 * @param account 	帐号
	 * @param money		完成任务之后需要充值的金额
     * @return
     */
	int bindAppAccount(@Param("userId") String userId,@Param("app_id") String app_id, @Param("account") String account, @Param("money") String money);

	/**
	 * 查看单个应用对应的广告列表
	 * @param app_id
	 * @param flag
	 * @return
     */
	List<AppADsDto> selectOneAppAds(@Param("app_id") String app_id, @Param("flag") String flag);

	/**
	 * 查询用户在应用对应的专项广告是否播放完成
	 * @param userId
	 * @param app_id
     * @return
     */
	List<String> selectFinish_AppAdId(@Param("userId") String userId, @Param("app_id") String app_id);

	/**
	 * 创建对应的专项积分账户
	 * @param userId
	 * @param app_id
     * @return
     */
	int createTowardAccount(@Param("userId") String userId, @Param("app_id") String app_id);

	/**
	 * 查询用户是否已经存在这个专项积分账户
	 * @param userId
	 * @param app_id
     * @return
     */
	boolean ifHasTowardAccount(@Param("userId") String userId, @Param("app_id") String app_id);

	/**
	 * 查询用户已经关注的应用id列表
	 * @param userId
	 * @return
     */
	List<String> selectAddedAppId(@Param("userId") String userId);

//	/**
//	 * 用户取消关注内容商之后将
//	 * @param userId
//	 * @param devId
//     * @return
//     */
//	int updateTowardAccountStatus_Del(String userId, String devId);
}
